home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / drivers / naughtyb.c < prev    next >
C/C++ Source or Header  |  2000-04-04  |  18KB  |  525 lines

  1. /***************************************************************************
  2.  
  3. Naughty Boy driver by Sal and John Bugliarisi.
  4. This driver is based largely on MAME's Phoenix driver, since Naughty Boy runs
  5. on similar hardware as Phoenix. Phoenix driver provided by Brad Oliver.
  6. Thanks to Richard Davies for his Phoenix emulator source.
  7.  
  8.  
  9. Naughty Boy memory map
  10.  
  11. 0000-3fff 16Kb Program ROM
  12. 4000-7fff 1Kb Work RAM (mirrored)
  13. 8000-87ff 2Kb Video RAM Charset A (lower priority, mirrored)
  14. 8800-8fff 2Kb Video RAM Charset b (higher priority, mirrored)
  15. 9000-97ff 2Kb Video Control write-only (mirrored)
  16. 9800-9fff 2Kb Video Scroll Register (mirrored)
  17. a000-a7ff 2Kb Sound Control A (mirrored)
  18. a800-afff 2Kb Sound Control B (mirrored)
  19. b000-b7ff 2Kb 8bit Game Control read-only (mirrored)
  20. b800-bfff 1Kb 8bit Dip Switch read-only (mirrored)
  21. c000-0000 16Kb Unused
  22.  
  23. memory mapped ports:
  24.  
  25. read-only:
  26. b000-b7ff IN
  27. b800-bfff DSW
  28.  
  29.  
  30. Naughty Boy Switch Settings
  31. (C)1982 Cinematronics
  32.  
  33.  --------------------------------------------------------
  34. |Option |Factory|Descrpt| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
  35.  ------------------------|-------------------------------
  36. |Lives    |        |2        |on |on |    |    |    |    |    |    |
  37.  ------------------------ -------------------------------
  38. |        |    X    |3        |off|on |    |    |    |    |    |    |
  39.  ------------------------ -------------------------------
  40. |        |        |4        |on |off|    |    |    |    |    |    |
  41.  ------------------------ -------------------------------
  42. |        |        |5        |off|off|    |    |    |    |    |    |
  43.  ------------------------ -------------------------------
  44. |Extra    |        |10000    |    |    |on |on |    |    |    |    |
  45.  ------------------------ -------------------------------
  46. |        |    X    |30000    |    |    |off|on |    |    |    |    |
  47.  ------------------------ -------------------------------
  48. |        |        |50000    |    |    |on |off|    |    |    |    |
  49.  ------------------------ -------------------------------
  50. |        |        |70000    |    |    |off|off|    |    |    |    |
  51.  ------------------------ -------------------------------
  52. |Credits|        |2c, 1p |    |    |    |    |on |on |    |    |
  53.  ------------------------ -------------------------------
  54. |        |    X    |1c, 1p |    |    |    |    |off|on |    |    |
  55.  ------------------------ -------------------------------
  56. |        |        |1c, 2p |    |    |    |    |on |off|    |    |
  57.  ------------------------ -------------------------------
  58. |        |        |4c, 3p |    |    |    |    |off|off|    |    |
  59.  ------------------------ -------------------------------
  60. |Dffclty|    X    |Easier |    |    |    |    |    |    |on |    |
  61.  ------------------------ -------------------------------
  62. |        |        |Harder |    |    |    |    |    |    |off|    |
  63.  ------------------------ -------------------------------
  64. | Type    |        |Upright|    |    |    |    |    |    |    |on |
  65.  ------------------------ -------------------------------
  66. |        |        |Cktail |    |    |    |    |    |    |    |off|
  67.  ------------------------ -------------------------------
  68.  
  69. *
  70. * Pop Flamer
  71. *
  72.  
  73. Pop Flamer appears to run on identical hardware as Naughty Boy.
  74. The dipswitches are even identical. Spooky.
  75.  
  76.                         1    2    3    4    5    6    7    8
  77. -------------------------------------------------------
  78. Number of Mr. Mouse 2 |ON |ON |   |   |   |   |   |   |
  79.                     3 |OFF|ON |   |   |   |   |   |   |
  80.                     4 |ON |OFF|   |   |   |   |   |   |
  81.                     5 |OFF|OFF|   |   |   |   |   |   |
  82. -------------------------------------------------------
  83. Extra Mouse    10,000 |   |   |ON |ON |   |   |   |   |
  84.                30,000 |   |   |OFF|ON |   |   |   |   |
  85.                50,000 |   |   |ON |OFF|   |   |   |   |
  86.                70,000 |   |   |OFF|OFF|   |   |   |   |
  87. -------------------------------------------------------
  88. Credit    2 coin 1 play |   |   |   |   |ON |ON |   |   |
  89.         1 coin 1 play |   |   |   |   |OFF|ON |   |   |
  90.         1 coin 2 play |   |   |   |   |ON |OFF|   |   |
  91.         1 coin 3 play |   |   |   |   |OFF|OFF|   |   |
  92. -------------------------------------------------------
  93. Skill           Easier |   |   |   |   |   |   |ON |   |
  94.                Harder |   |   |   |   |   |   |OFF|   |
  95. -------------------------------------------------------
  96. Game style        Table |   |   |   |   |   |   |   |OFF|
  97.               Upright |   |   |   |   |   |   |   |ON |
  98.  
  99.  
  100. TODO:
  101.     * sounds are a little skanky
  102.     * Figure out how cocktail/upright mode works
  103.  
  104.  ***************************************************************************/
  105.  
  106. #include "driver.h"
  107. #include "vidhrdw/generic.h"
  108.  
  109.  
  110.  
  111. extern unsigned char *naughtyb_videoram2;
  112. extern unsigned char *naughtyb_scrollreg;
  113.  
  114. WRITE_HANDLER( naughtyb_videoram2_w );
  115. WRITE_HANDLER( naughtyb_scrollreg_w );
  116. WRITE_HANDLER( naughtyb_videoreg_w );
  117. WRITE_HANDLER( popflame_videoreg_w );
  118. int naughtyb_vh_start(void);
  119. void naughtyb_vh_stop(void);
  120. void naughtyb_vh_convert_color_prom(unsigned char *palette, unsigned short *colortable,const unsigned char *color_prom);
  121. void naughtyb_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  122.  
  123. WRITE_HANDLER( pleiads_sound_control_a_w );
  124. WRITE_HANDLER( pleiads_sound_control_b_w );
  125. int naughtyb_sh_start(const struct MachineSound *msound);
  126. int popflame_sh_start(const struct MachineSound *msound);
  127. void pleiads_sh_stop(void);
  128. void pleiads_sh_update(void);
  129.  
  130. static struct MemoryReadAddress readmem[] =
  131. {
  132.     { 0x0000, 0x3fff, MRA_ROM },
  133.     { 0x4000, 0x8fff, MRA_RAM },
  134.     { 0xb000, 0xb7ff, input_port_0_r },     /* IN0 */
  135.     { 0xb800, 0xbfff, input_port_1_r },     /* DSW */
  136.     { -1 }    /* end of table */
  137. };
  138.  
  139. static struct MemoryWriteAddress writemem[] =
  140. {
  141.     { 0x0000, 0x3fff, MWA_ROM },
  142.     { 0x4000, 0x7fff, MWA_RAM },
  143.     { 0x8000, 0x87ff, videoram_w, &videoram, &videoram_size },
  144.     { 0x8800, 0x8fff, naughtyb_videoram2_w, &naughtyb_videoram2 },
  145.     { 0x9000, 0x97ff, naughtyb_videoreg_w },
  146.     { 0x9800, 0x9fff, MWA_RAM, &naughtyb_scrollreg },
  147.     { 0xa000, 0xa7ff, pleiads_sound_control_a_w },
  148.     { 0xa800, 0xafff, pleiads_sound_control_b_w },
  149.     { -1 }    /* end of table */
  150. };
  151.  
  152. static struct MemoryWriteAddress popflame_writemem[] =
  153. {
  154.     { 0x0000, 0x3fff, MWA_ROM },
  155.     { 0x4000, 0x7fff, MWA_RAM },
  156.     { 0x8000, 0x87ff, videoram_w, &videoram, &videoram_size },
  157.     { 0x8800, 0x8fff, naughtyb_videoram2_w, &naughtyb_videoram2 },
  158.     { 0x9000, 0x97ff, popflame_videoreg_w },
  159.     { 0x9800, 0x9fff, MWA_RAM, &naughtyb_scrollreg },
  160.     { 0xa000, 0xa7ff, pleiads_sound_control_a_w },
  161.     { 0xa800, 0xafff, pleiads_sound_control_b_w },
  162.     { -1 }    /* end of table */
  163. };
  164.  
  165.  
  166.  
  167. /***************************************************************************
  168.  
  169.   Naughty Boy doesn't have VBlank interrupts.
  170.   Interrupts are still used by the game: but they are related to coin
  171.   slots.
  172.  
  173. ***************************************************************************/
  174.  
  175. int naughtyb_interrupt(void)
  176. {
  177.     if (readinputport(2) & 1)
  178.         return nmi_interrupt();
  179.     else return ignore_interrupt();
  180. }
  181.  
  182. INPUT_PORTS_START( naughtyb )
  183.     PORT_START    /* IN0 */
  184.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
  185.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
  186.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  187.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
  188.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY )
  189.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_4WAY )
  190.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY )
  191.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY )
  192.  
  193.     PORT_START    /* DSW0 & VBLANK */
  194.     PORT_DIPNAME( 0x03, 0x01, DEF_STR( Lives ) )
  195.     PORT_DIPSETTING(    0x00, "2" )
  196.     PORT_DIPSETTING(    0x01, "3" )
  197.     PORT_DIPSETTING(    0x02, "4" )
  198.     PORT_DIPSETTING(    0x03, "5" )
  199.     PORT_DIPNAME( 0x0c, 0x04, DEF_STR( Bonus_Life ) )
  200.     PORT_DIPSETTING(    0x00, "10000" )
  201.     PORT_DIPSETTING(    0x04, "30000" )
  202.     PORT_DIPSETTING(    0x08, "50000" )
  203.     PORT_DIPSETTING(    0x0c, "70000" )
  204.     PORT_DIPNAME( 0x30, 0x10, DEF_STR( Coinage ) )
  205.     PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
  206.     PORT_DIPSETTING(    0x10, DEF_STR( 1C_1C ) )
  207.     PORT_DIPSETTING(    0x20, DEF_STR( 1C_2C ) )
  208.     PORT_DIPSETTING(    0x30, DEF_STR( 1C_3C ) )
  209.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Difficulty ) )
  210.     PORT_DIPSETTING(    0x00, "Easy" )
  211.     PORT_DIPSETTING(    0x40, "Hard" )
  212.     /* This is a bit of a mystery. Bit 0x80 is read as the vblank, but
  213.        it apparently also controls cocktail/table mode. */
  214.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK )
  215.  
  216.     PORT_START    /* FAKE */
  217.     /* The coin slots are not memory mapped. */
  218.     /* This fake input port is used by the interrupt */
  219.     /* handler to be notified of coin insertions. We use IMPULSE to */
  220.     /* trigger exactly one interrupt, without having to check when the */
  221.     /* user releases the key. */
  222.         PORT_BIT_IMPULSE( 0x01, IP_ACTIVE_HIGH, IPT_COIN1, 1 )
  223. INPUT_PORTS_END
  224.  
  225.  
  226.  
  227. static struct GfxLayout charlayout =
  228. {
  229.     8,8,    /* 8*8 characters */
  230.     512,    /* 512 characters */
  231.     2,        /* 2 bits per pixel */
  232.     { 512*8*8, 0 }, /* the two bitplanes are separated */
  233.     { 7, 6, 5, 4, 3, 2, 1, 0 }, /* pretty straightforward layout */
  234.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
  235.     8*8     /* every char takes 8 consecutive bytes */
  236. };
  237.  
  238.  
  239.  
  240. static struct GfxDecodeInfo gfxdecodeinfo[] =
  241. {
  242.     { REGION_GFX1, 0, &charlayout,      0, 32 },
  243.     { REGION_GFX2, 0, &charlayout, 32*4, 32 },
  244.     { -1 } /* end of array */
  245. };
  246.  
  247.  
  248.  
  249. static struct CustomSound_interface naughtyb_custom_interface =
  250. {
  251.     naughtyb_sh_start,
  252.     pleiads_sh_stop,
  253.     pleiads_sh_update
  254. };
  255.  
  256. static struct CustomSound_interface popflame_custom_interface =
  257. {
  258.     popflame_sh_start,
  259.     pleiads_sh_stop,
  260.     pleiads_sh_update
  261. };
  262.  
  263. static struct TMS36XXinterface tms3615_interface =
  264. {
  265.     1,
  266.     { 60        },    /* mixing level */
  267.     { TMS3615    },    /* TMS36xx subtype */
  268.     { 350        },    /* base clock (one octave below A) */
  269.     /*
  270.      * Decay times of the voices; NOTE: it's unknown if
  271.      * the the TMS3615 mixes more than one voice internally.
  272.      * A wav taken from Pop Flamer sounds like there
  273.      * are at least no 'odd' harmonics (5 1/3' and 2 2/3')
  274.      */
  275.     { {0.15,0.20,0,0,0,0} }
  276. };
  277.  
  278.  
  279.  
  280. static struct MachineDriver machine_driver_naughtyb =
  281. {
  282.     /* basic machine hardware */
  283.     {
  284.         {
  285.             CPU_Z80,
  286.             1500000,    /* 3 Mhz ? */
  287.             readmem,writemem,0,0,
  288.             naughtyb_interrupt,1
  289.         }
  290.     },
  291.     60, DEFAULT_REAL_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  292.     1,    /* single CPU, no need for interleaving */
  293.     0,
  294.  
  295.     /* video hardware */
  296.     36*8, 28*8, { 0*8, 36*8-1, 0*8, 28*8-1 },
  297.     gfxdecodeinfo,
  298.     256,32*4+32*4,
  299.     naughtyb_vh_convert_color_prom,
  300.  
  301.     VIDEO_TYPE_RASTER,
  302.     0,
  303.     naughtyb_vh_start,
  304.     naughtyb_vh_stop,
  305.     naughtyb_vh_screenrefresh,
  306.  
  307.     /* sound hardware */
  308.     /* uses the TMS3615NS for sound */
  309.     0,0,0,0,
  310.     {
  311.         {
  312.             SOUND_TMS36XX,
  313.             &tms3615_interface
  314.         },
  315.         {
  316.             SOUND_CUSTOM,
  317.             &naughtyb_custom_interface
  318.         }
  319.     }
  320. };
  321.  
  322. /* Exactly the same but for the writemem handler */
  323. static struct MachineDriver machine_driver_popflame =
  324. {
  325.     /* basic machine hardware */
  326.     {
  327.         {
  328.             CPU_Z80,
  329.             1500000,    /* 3 Mhz ? */
  330.             readmem,popflame_writemem,0,0,
  331.             naughtyb_interrupt,1
  332.         }
  333.     },
  334.     60, DEFAULT_REAL_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  335.     1,    /* single CPU, no need for interleaving */
  336.     0,
  337.  
  338.     /* video hardware */
  339.     36*8, 28*8, { 0*8, 36*8-1, 0*8, 28*8-1 },
  340.     gfxdecodeinfo,
  341.     256,32*4+32*4,
  342.     naughtyb_vh_convert_color_prom,
  343.  
  344.     VIDEO_TYPE_RASTER,
  345.     0,
  346.     naughtyb_vh_start,
  347.     naughtyb_vh_stop,
  348.     naughtyb_vh_screenrefresh,
  349.  
  350.     /* sound hardware */
  351.     /* uses the TMS3615NS for sound */
  352.     0,0,0,0,
  353.     {
  354.         {
  355.             SOUND_TMS36XX,
  356.             &tms3615_interface
  357.         },
  358.         {
  359.             SOUND_CUSTOM,
  360.             &popflame_custom_interface
  361.         }
  362.     }
  363. };
  364.  
  365.  
  366.  
  367. /***************************************************************************
  368.  
  369.   Game driver(s)
  370.  
  371. ***************************************************************************/
  372.  
  373. ROM_START( naughtyb )
  374.     ROM_REGION( 0x10000, REGION_CPU1 )        /* 64k for code */
  375.     ROM_LOAD( "1.30",       0x0000, 0x0800, 0xf6e1178e )
  376.     ROM_LOAD( "2.29",       0x0800, 0x0800, 0xb803eb8c )
  377.     ROM_LOAD( "3.28",       0x1000, 0x0800, 0x004d0ba7 )
  378.     ROM_LOAD( "4.27",       0x1800, 0x0800, 0x3c7bcac6 )
  379.     ROM_LOAD( "5.26",       0x2000, 0x0800, 0xea80f39b )
  380.     ROM_LOAD( "6.25",       0x2800, 0x0800, 0x66d9f942 )
  381.     ROM_LOAD( "7.24",       0x3000, 0x0800, 0x00caf9be )
  382.     ROM_LOAD( "8.23",       0x3800, 0x0800, 0x17c3b6fb )
  383.  
  384.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  385.     ROM_LOAD( "15.44",       0x0000, 0x0800, 0xd692f9c7 )
  386.     ROM_LOAD( "16.43",       0x0800, 0x0800, 0xd3ba8b27 )
  387.     ROM_LOAD( "13.46",       0x1000, 0x0800, 0xc1669cd5 )
  388.     ROM_LOAD( "14.45",       0x1800, 0x0800, 0xeef2c8e5 )
  389.  
  390.     ROM_REGION( 0x2000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  391.     ROM_LOAD( "11.48",       0x0000, 0x0800, 0x75ec9710 )
  392.     ROM_LOAD( "12.47",       0x0800, 0x0800, 0xef0706c3 )
  393.     ROM_LOAD( "9.50",       0x1000, 0x0800, 0x8c8db764 )
  394.     ROM_LOAD( "10.49",       0x1800, 0x0800, 0xc97c97b9 )
  395.  
  396.     ROM_REGION( 0x0200, REGION_PROMS )
  397.     ROM_LOAD( "6301-1.63", 0x0000, 0x0100, 0x98ad89a1 ) /* palette low bits */
  398.     ROM_LOAD( "6301-1.64", 0x0100, 0x0100, 0x909107d4 ) /* palette high bits */
  399. ROM_END
  400.  
  401. ROM_START( naughtya )
  402.     ROM_REGION( 0x10000, REGION_CPU1 )        /* 64k for code */
  403.     ROM_LOAD( "91",        0x0000, 0x0800, 0x42b14bc7 )
  404.     ROM_LOAD( "92",        0x0800, 0x0800, 0xa24674b4 )
  405.     ROM_LOAD( "3.28",       0x1000, 0x0800, 0x004d0ba7 )
  406.     ROM_LOAD( "4.27",       0x1800, 0x0800, 0x3c7bcac6 )
  407.     ROM_LOAD( "95",        0x2000, 0x0800, 0xe282f1b8 )
  408.     ROM_LOAD( "96",        0x2800, 0x0800, 0x61178ff2 )
  409.     ROM_LOAD( "97",        0x3000, 0x0800, 0x3cafde88 )
  410.     ROM_LOAD( "8.23",       0x3800, 0x0800, 0x17c3b6fb )
  411.  
  412.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  413.     ROM_LOAD( "15.44",       0x0000, 0x0800, 0xd692f9c7 )
  414.     ROM_LOAD( "16.43",       0x0800, 0x0800, 0xd3ba8b27 )
  415.     ROM_LOAD( "13.46",       0x1000, 0x0800, 0xc1669cd5 )
  416.     ROM_LOAD( "14.45",       0x1800, 0x0800, 0xeef2c8e5 )
  417.  
  418.     ROM_REGION( 0x2000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  419.     ROM_LOAD( "11.48",       0x0000, 0x0800, 0x75ec9710 )
  420.     ROM_LOAD( "12.47",       0x0800, 0x0800, 0xef0706c3 )
  421.     ROM_LOAD( "9.50",       0x1000, 0x0800, 0x8c8db764 )
  422.     ROM_LOAD( "10.49",       0x1800, 0x0800, 0xc97c97b9 )
  423.  
  424.     ROM_REGION( 0x0200, REGION_PROMS )
  425.     ROM_LOAD( "6301-1.63", 0x0000, 0x0100, 0x98ad89a1 ) /* palette low bits */
  426.     ROM_LOAD( "6301-1.64", 0x0100, 0x0100, 0x909107d4 ) /* palette high bits */
  427. ROM_END
  428.  
  429. ROM_START( naughtyc )
  430.     ROM_REGION( 0x10000, REGION_CPU1 )        /* 64k for code */
  431.     ROM_LOAD( "nb1ic30",   0x0000, 0x0800, 0x3f482fa3 )
  432.     ROM_LOAD( "nb2ic29",   0x0800, 0x0800, 0x7ddea141 )
  433.     ROM_LOAD( "nb3ic28",   0x1000, 0x0800, 0x8c72a069 )
  434.     ROM_LOAD( "nb4ic27",   0x1800, 0x0800, 0x30feae51 )
  435.     ROM_LOAD( "nb5ic26",   0x2000, 0x0800, 0x05242fd0 )
  436.     ROM_LOAD( "nb6ic25",   0x2800, 0x0800, 0x7a12ffea )
  437.     ROM_LOAD( "nb7ic24",   0x3000, 0x0800, 0x9cc287df )
  438.     ROM_LOAD( "nb8ic23",   0x3800, 0x0800, 0x4d84ff2c )
  439.  
  440.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  441.     ROM_LOAD( "15.44",       0x0000, 0x0800, 0xd692f9c7 )
  442.     ROM_LOAD( "16.43",       0x0800, 0x0800, 0xd3ba8b27 )
  443.     ROM_LOAD( "13.46",       0x1000, 0x0800, 0xc1669cd5 )
  444.     ROM_LOAD( "14.45",       0x1800, 0x0800, 0xeef2c8e5 )
  445.  
  446.     ROM_REGION( 0x2000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  447.     ROM_LOAD( "nb11ic48",  0x0000, 0x0800, 0x23271a13 )
  448.     ROM_LOAD( "12.47",       0x0800, 0x0800, 0xef0706c3 )
  449.     ROM_LOAD( "nb9ic50",   0x1000, 0x0800, 0xd6949c27 )
  450.     ROM_LOAD( "10.49",       0x1800, 0x0800, 0xc97c97b9 )
  451.  
  452.     ROM_REGION( 0x0200, REGION_PROMS )
  453.     ROM_LOAD( "6301-1.63", 0x0000, 0x0100, 0x98ad89a1 ) /* palette low bits */
  454.     ROM_LOAD( "6301-1.64", 0x0100, 0x0100, 0x909107d4 ) /* palette high bits */
  455. ROM_END
  456.  
  457. ROM_START( popflame )
  458.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  459.     ROM_LOAD( "ic86.pop",      0x0000, 0x1000, 0x5e32bbdf )
  460.     ROM_LOAD( "ic80.pop",      0x1000, 0x1000, 0xb77abf3d )
  461.     ROM_LOAD( "ic94.pop",      0x2000, 0x1000, 0x945a3c0f )
  462.     ROM_LOAD( "ic100.pop",      0x3000, 0x1000, 0xf9f2343b )
  463.  
  464.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  465.     ROM_LOAD( "ic13.pop",      0x0000, 0x1000, 0x2367131e )
  466.     ROM_LOAD( "ic3.pop",      0x1000, 0x1000, 0xdeed0a8b )
  467.  
  468.     ROM_REGION( 0x2000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  469.     ROM_LOAD( "ic29.pop",      0x0000, 0x1000, 0x7b54f60f )
  470.     ROM_LOAD( "ic38.pop",      0x1000, 0x1000, 0xdd2d9601 )
  471.  
  472.     ROM_REGION( 0x0200, REGION_PROMS )
  473.     ROM_LOAD( "ic53",          0x0000, 0x0100, 0x6e66057f ) /* palette low bits */
  474.     ROM_LOAD( "ic54",          0x0100, 0x0100, 0x236bc771 ) /* palette high bits */
  475. ROM_END
  476.  
  477. ROM_START( popflama )
  478.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  479.     ROM_LOAD( "popflama.30",     0x0000, 0x1000, 0xa9bb0e8a )
  480.     ROM_LOAD( "popflama.28",     0x1000, 0x1000, 0xdebe6d03 )
  481.     ROM_LOAD( "popflama.26",     0x2000, 0x1000, 0x09df0d4d )
  482.     ROM_LOAD( "popflama.24",     0x3000, 0x1000, 0xf399d553 )
  483.  
  484.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  485.     ROM_LOAD( "ic13.pop",      0x0000, 0x1000, 0x2367131e )
  486.     ROM_LOAD( "ic3.pop",      0x1000, 0x1000, 0xdeed0a8b )
  487.  
  488.     ROM_REGION( 0x2000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  489.     ROM_LOAD( "ic29.pop",      0x0000, 0x1000, 0x7b54f60f )
  490.     ROM_LOAD( "ic38.pop",      0x1000, 0x1000, 0xdd2d9601 )
  491.  
  492.     ROM_REGION( 0x0200, REGION_PROMS )
  493.     ROM_LOAD( "ic53",          0x0000, 0x0100, 0x6e66057f ) /* palette low bits */
  494.     ROM_LOAD( "ic54",          0x0100, 0x0100, 0x236bc771 ) /* palette high bits */
  495. ROM_END
  496.  
  497. ROM_START( popflamb )
  498.     ROM_REGION( 0x10000, REGION_CPU1 )        /* 64k for code */
  499.     ROM_LOAD( "ic86.bin",      0x0000, 0x1000, 0x06397a4b )
  500.     ROM_LOAD( "ic80.pop",      0x1000, 0x1000, 0xb77abf3d )
  501.     ROM_LOAD( "ic94.bin",      0x2000, 0x1000, 0xae5248ae )
  502.     ROM_LOAD( "ic100.pop",      0x3000, 0x1000, 0xf9f2343b )
  503.  
  504.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  505.     ROM_LOAD( "ic13.pop",      0x0000, 0x1000, 0x2367131e )
  506.     ROM_LOAD( "ic3.pop",      0x1000, 0x1000, 0xdeed0a8b )
  507.  
  508.     ROM_REGION( 0x2000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  509.     ROM_LOAD( "ic29.pop",      0x0000, 0x1000, 0x7b54f60f )
  510.     ROM_LOAD( "ic38.pop",      0x1000, 0x1000, 0xdd2d9601 )
  511.  
  512.     ROM_REGION( 0x0200, REGION_PROMS )
  513.     ROM_LOAD( "ic53",          0x0000, 0x0100, 0x6e66057f ) /* palette low bits */
  514.     ROM_LOAD( "ic54",          0x0100, 0x0100, 0x236bc771 ) /* palette high bits */
  515. ROM_END
  516.  
  517.  
  518.  
  519. GAMEX( 1982, naughtyb, 0,         naughtyb, naughtyb, 0, ROT90, "Jaleco", "Naughty Boy", GAME_NO_COCKTAIL )
  520. GAMEX( 1982, naughtya, naughtyb, naughtyb, naughtyb, 0, ROT90, "bootleg", "Naughty Boy (bootleg)", GAME_NO_COCKTAIL )
  521. GAMEX( 1982, naughtyc, naughtyb, naughtyb, naughtyb, 0, ROT90, "Jaleco (Cinematronics license)", "Naughty Boy (Cinematronics)", GAME_NO_COCKTAIL )
  522. GAMEX( 1982, popflame, 0,         popflame, naughtyb, 0, ROT90, "Jaleco", "Pop Flamer (set 1)", GAME_NO_COCKTAIL )
  523. GAMEX( 1982, popflama, popflame, popflame, naughtyb, 0, ROT90, "Jaleco", "Pop Flamer (set 2)", GAME_NO_COCKTAIL )
  524. GAMEX( 1982, popflamb, popflame, popflame, naughtyb, 0, ROT90, "Jaleco (Stern License)", "Pop Flamer (set 3)", GAME_NO_COCKTAIL )
  525.